Artículo científico

Datos

Lectura de datos

Objetivos

Resultados del paper

Correlaciones

  • Aunque fueron numerosos los resultados obtenidos por los autores, para el objetivo de este documento se destacan los siguientes:
    • La relación entre el área transversal relativa (CSA) del recto abdominal (AR) del lado de la pierna de despegue y el mejor registro personal para el salto largo.
      • Correlación: 0.674
      • Valor p: 0.004 (estadísticamente significativo)
  • Las correlaciones (con intervalo de confianza del 95%) se presentan en la siguiente tabla:

Predichos vs Reales (paper)

Resultados adicionales con R

Shapiro Wilk

Se comprueba la normalidad de las variables (\(\alpha = 0.05\)), bajo el siguiente juego de hipótesis:

\[H_0: X \sim N(\mu, \sigma^2)\\ H1: x \nsim N(\mu, \sigma^2)\]

  • Nota: aunque los autores mencionan que fueron aplicadas las pruebas de Shapiro Wilk para comprobar el supuesto de normalidad, en la tabla anterior se evidencia que algunas variables (ej. distancia de salto, grasa subcutanea, entre otras) no se distribuyen de forma normal. Este resultado tiene connotaciones de importancia, ya que las correlaciones podrían ser obtenidas mediante métodos no paramétricos.

Matriz de correlaciones

  • Se construye la matriz de correlaciones (método de Pearson).
  • La variable que presente mayor correlación lineal con la longitud del salto, será tenida en cuenta para estructurar el modelo de regresión lineal simple (RLS). Con las demás variables se construye el modelo de regresión lineal múltiple (RLM).

  • Notas:
    • Se evidencia alta correlación entre algunas variables. Este patrón sugiere problemas de multicolinealidad al ajustar un modelo de RLM.
    • Atletas con mayor altura tienden a presentar saltos de menor distancia. Este comportamiento es obtenido de igual forma en aquellos que aumentan la velocidad del sprint al saltar, es decir, que a mayor velocidad, menor longitud de salto.
    • Atletas con el músculo recto abdominal de mayor longitud, presentan mayores distancias en sus saltos. Con esta variable se ajusta el modelo de RLS.

Regresión Lineal Simple (RLS)

Modelo Lineal con lm()


Call:
lm(formula = dist_salto_cm ~ RA_takeof_leg, data = datos)

Residuals:
   Min     1Q Median     3Q    Max 
-72.26 -22.41   8.38  22.24  65.10 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)    589.584     49.894  11.817 9.66e-11 ***
RA_takeof_leg   11.928      4.443   2.685   0.0139 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 40.89 on 21 degrees of freedom
  (22 observations deleted due to missingness)
Multiple R-squared:  0.2555,    Adjusted R-squared:  0.2201 
F-statistic: 7.208 on 1 and 21 DF,  p-value: 0.01387
  • Nota: el resultado anterior sugiere que la variable RA_takeof_leg es estadísticamente significativa (\(valor\ p =0.0139\)) sobre la variabilidad observada en la distancia del salto. Además, se puede inferir que por cada unidad que aumenta RA_takeof_leg, la distancia de salto es 11.928 centímetros mayor. La variable RA_takeof_leg explica 22.01% de la variabilidad observada en la distancia de salto.

Significancia Estadística

Analysis of Variance Table

Response: dist_salto_cm
              Df Sum Sq Mean Sq F value  Pr(>F)  
RA_takeof_leg  1  12050 12050.0  7.2078 0.01387 *
Residuals     21  35108  1671.8                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residuales

  • Normalidad (Shapiro Wilk) de los residuales:

    Shapiro-Wilk normality test

data:  residuals(mod_rls)
W = 0.96191, p-value = 0.5029

    studentized Breusch-Pagan test

data:  mod_rls
BP = 0.0025838, df = 1, p-value = 0.9595
  • Se comprueba que existe normalidad de los residuos y, además, son homocedasticos.

Regresión Lineal Múltiple (RLM)

Modelo 1

Modelo 2

Modelo 3

Modelo 4

LS0tDQp0aXRsZTogIkFuw6FsaXNpcyBkZSBSZWdyZXNpw7NuIGNvbiBSIg0Kc3VidGl0bGU6ICJDb21wYXJhY2nDs24gZGUgbW9kZWxvcyBkZSByZWdyZXNpw7NuIGNvbiBSIg0KYXV0aG9yOiAiRWRpbWVyIERhdmlkIEphcmFtaWxsbyINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICBjc3M6IGNzcy9lc3RpbG8uY3NzDQogICAgdGhlbWU6IGNvc21vDQogICAgaGlnaGxpZ2h0OiB6ZW5idXJuDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGZpZy5hbGlnbiA9ICJjZW50ZXIiLA0KICAgICAgICAgICAgICAgICAgICAgIGZpZy53aWR0aCA9IDguNSwNCiAgICAgICAgICAgICAgICAgICAgICBmaWcuaGVpZ2h0ID0gNSkNCmBgYA0KDQo8aW1nIHNyYz0iaW1nL3NjaWVuY2UucG5nIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDtyaWdodDozMHB4OyB3aWR0aDoxNTBweCIgLz4NCg0KIyBBcnTDrWN1bG8gY2llbnTDrWZpY28NCg0KPGNlbnRlcj4NCjxpbWcgc3JjID0gImltZy9wYXBlci5wbmciIC8+DQo8L2NlbnRlcj4NCg0KIyBEYXRvcw0KDQotIERhdG9zIHRvbWFkb3MgZGVsIGFydMOtY3VsbyByZWZlcmVuY2lhZG8gcHJldmlhbWVudGUuDQotIFtGdWVudGUgZGUgZGF0b3MgLSBBcnTDrWN1bG8gZW4gUExPUyB8IE9ORS5dKGh0dHBzOi8vam91cm5hbHMucGxvcy5vcmcvcGxvc29uZS9hcnRpY2xlP2lkPTEwLjEzNzEvam91cm5hbC5wb25lLjAyMjU0MTMjcG9uZS0wMjI1NDEzLWcwMDEpDQotIEVuIGxhIGJhc2UgZGUgZGF0b3Mgc2UgdGllbmVuIGRvcyBncnVwb3MgYmFqbyBhbsOhbGlzaXM6DQogICAgLSAqKkdydXBvICpMb25nIGp1bXBlcnMqOioqIGlkIDEgYSAyMy4NCiAgICAtICoqR3J1cG8gKnVudHJhaW5lZCBtZW4qOioqIGlkIDI0LTQ1Lg0KDQojIExlY3R1cmEgZGUgZGF0b3MNCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KZGF0b3MgPC0gcmVhZF94bHN4KCIuLi9kYXRhL0RhdGFfUGFwZXJfUGxvc19PbmVfTXVzY2xlLnhsc3giLCBza2lwID0gMywNCiAgICAgICAgICAgICAgICAgICBuYSA9ICJOL0EiLCBuX21heCA9IDQ3KSAlPiUgDQogIHJlbmFtZShSQV90YWtlb2ZfbGVnID0gUkEuLi43LA0KICAgICAgICAgT0JfdGFrZW9mX2xlZyA9IE9CLi4uOCwNCiAgICAgICAgIFBNX3Rha2VvZl9sZWcgPSBQTS4uLjksDQogICAgICAgICBRTF90YWtlb2ZfbGVnID0gUUwuLi4xMCwNCiAgICAgICAgIEVTX3Rha2VvZl9sZWcgPSBFUy4uLjExLA0KICAgICAgICAgR21heF90YWtlb2ZfbGVnID0gR21heC4uLjEyLA0KICAgICAgICAgR21lZF90YWtlb2ZfbGVnID0gR21lZC4uLjEzLA0KICAgICAgICAgSUxfdGFrZW9mX2xlZyA9IElMLi4uMTQsDQogICAgICAgICBSQV9mcmVlX2xlZyA9IFJBLi4uMTUsDQogICAgICAgICBPQl9mcmVlX2xlZyA9IE9CLi4uMTYsDQogICAgICAgICBQTV9mcmVlX2xlZyA9IFBNLi4uMTcsDQogICAgICAgICBRTF9mcmVlX2xlZyA9IFFMLi4uMTgsDQogICAgICAgICBFU19mcmVlX2xlZyA9IEVTLi4uMTksDQogICAgICAgICBHbWF4X2ZyZWVfbGVnID0gR21heC4uLjIwLA0KICAgICAgICAgR21lZF9mcmVlX2xlZyA9IEdtZWQuLi4yMSwNCiAgICAgICAgIElMX2ZyZWVfbGVnID0gSUwuLi4yMiwNCiAgICAgICAgIGlkID0gSUQsDQogICAgICAgICBlZGFkID0gYEFnZSAoeWVhcnMpYCwNCiAgICAgICAgIGFsdHVyYV9jbSA9IGBIZWlnaHQgKGNtKWAsDQogICAgICAgICBpbWMgPSBgQm9keSBtYXNzIChrZylgLA0KICAgICAgICAgZGlzdF9zYWx0b19jbSA9IGBsb25nIGp1bXAgZGlzdGFuY2UgKGNtKWAsDQogICAgICAgICBzcHJpbnRfMTAwbV9zZWNvbmRzID0gYDEwMC1tIHNwcmludCB0aW1lIChzKWAsDQogICAgICAgICBncmFzYV9zdWJjdXRfY20yID0gYFN1YmN1dGFuZW91cyBmYXQgQ1NBIChhYnNvbHV0ZSB2YWx1ZSwgY20yKWApICU+JSANCiAgbXV0YXRlKHR5cGUgPSBpZl9lbHNlKGlkICVpbiUgYygxOjIzKSwgdHJ1ZSA9ICJMb25nIGp1bXBlcnMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgPSAiVW50cmFpbmVkIG1lbiIpKQ0KZGF0b3MNCmBgYA0KDQojIE9iamV0aXZvcw0KDQotIFJlcGxpY2FyIGFuw6FsaXNpcyBlc3RhZMOtc3RpY29zIGFwbGljYWRvcyBlbiBlbCBhcnTDrWN1bG8gY2llbnTDrWZpY28gZGUgaW50ZXLDqXMuDQotIEV2aWRlbmNpYXIgbGEgcmVsYWNpw7NuIGV4aXN0ZW50ZSBlbnRyZSBjYXJhY3RlcsOtc3RpY2FzIGFuYXTDs21pY2FzIGRlIGF0bGV0YXMgdnMgcmVuZGltaWVudG8gZW4gc2FsdG8gbGFyZ28uDQotIEV2YWx1YXIgb3Ryb3MgbcOpdG9kb3MgZGUgWypzdGF0aXN0aWNhbCBsZWFybmluZypdKGh0dHBzOi8vZWRpbWVyLmdpdGh1Yi5pby9kb2N1bWVudHNfUi9MaW5lYXJNb2RlbHNfTGVhc3RTcXVhcmVzL0xpbmVhck1vZGVsc19MZWFzdFNxYXVhcmVzLmh0bWwjMSkgeSBjb21wYXJhcmxvcyBjb24gbG9zIHJlc3VsdGFkb3Mgb2J0ZW5pZG9zIHBvciBsb3MgYXV0b3Jlcy4NCg0KIyBSZXN1bHRhZG9zIGRlbCAqcGFwZXIqIA0KDQojIyBDb3JyZWxhY2lvbmVzIA0KDQotIEF1bnF1ZSBmdWVyb24gbnVtZXJvc29zIGxvcyByZXN1bHRhZG9zIG9idGVuaWRvcyBwb3IgbG9zIGF1dG9yZXMsIHBhcmEgZWwgb2JqZXRpdm8gZGUgZXN0ZSBkb2N1bWVudG8gc2UgZGVzdGFjYW4gbG9zIHNpZ3VpZW50ZXM6DQogICAgLSBMYSByZWxhY2nDs24gZW50cmUgZWwgw6FyZWEgdHJhbnN2ZXJzYWwgcmVsYXRpdmEgKENTQSkgZGVsIHJlY3RvIGFiZG9taW5hbCAoQVIpIGRlbCBsYWRvIGRlIGxhIHBpZXJuYSBkZSBkZXNwZWd1ZSB5IGVsIG1lam9yIHJlZ2lzdHJvIHBlcnNvbmFsIHBhcmEgZWwgc2FsdG8gbGFyZ28uDQogICAgICAgIC0gKipDb3JyZWxhY2nDs246KiogMC42NzQNCiAgICAgICAgLSAqKlZhbG9yIHA6KiogMC4wMDQgKGVzdGFkw61zdGljYW1lbnRlIHNpZ25pZmljYXRpdm8pDQoNCi0gTGFzIGNvcnJlbGFjaW9uZXMgKGNvbiBpbnRlcnZhbG8gZGUgY29uZmlhbnphIGRlbCA5NSUpIHNlIHByZXNlbnRhbiBlbiBsYSBzaWd1aWVudGUgdGFibGE6DQoNCjxjZW50ZXI+DQo8aW1nIHNyYyA9ICJpbWcvY29ycmVsYXRpb25zLnBuZyIvPg0KPC9jZW50ZXI+DQoNCiMjIEdyw6FmaWNvIGRlIGRpc3BlcnNpw7NuIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQojIyMgT3JpZ2luYWwNCg0KPGNlbnRlcj4NCjxpbWcgc3JjID0gImltZy9wYXBlcjIucG5nIiB3aWR0aD0iNDAwIiAvPg0KPC9jZW50ZXI+DQoNCiMjIyBSw6lwbGljYSBjb24gUg0KDQpgYGB7cn0NCmxpYnJhcnkoZ2dwbG90MikNCmRhdG9zICU+JSANCiAgZ2dwbG90KGRhdGEgPSAuLCBhZXMoeCA9IFJBX3Rha2VvZl9sZWcsIHkgPSBkaXN0X3NhbHRvX2NtKSkgKw0KICBnZW9tX3BvaW50KHNpemUgPSAzKSArDQogIGxhYnMoeCA9IGV4cHJlc3Npb24oJ1JlbGF0aXZlIENTQSBvZiBSQSB0YWtlb2ZmIGxlZyBzaWRlIC0gY20nXiIyIi8na2cnXiIyLzMiKSwNCiAgICAgICB5ID0gIlBlcnNvbmFsIGJlc3QgcmVjb3JkIG9mIGxvbmcganVtcCAoY20pIikgKw0KICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBzZSA9IEZBTFNFLCBsdHkgPSAzLCBsd2QgPSAxLCBjb2xvciA9ICJibGFjayIpICsNCiAgdGhlbWVfbGlnaHQoKQ0KYGBgDQoNCiMjIFByZWRpY2hvcyB2cyBSZWFsZXMgKCpwYXBlciopDQoNCjxjZW50ZXI+DQo8aW1nIHNyYyA9ICJpbWcvcGFwZXIzLnBuZyIgd2lkdGg9IjQwMCIgLz4NCjwvY2VudGVyPg0KDQojIFJlc3VsdGFkb3MgYWRpY2lvbmFsZXMgY29uIFINCg0KIyMgRGlzdHJpYnVjaW9uZXMNCg0KYGBge3IsIGZpZy5oZWlnaHQ9MTB9DQpkYXRvcyAlPiUgDQogIHNlbGVjdF9pZihpcy5udW1lcmljKSAlPiUgDQogIHNlbGVjdCgtaWQpICU+JSANCiAgZ2F0aGVyKGtleSA9ICJ2YXJpYWJsZSIsIHZhbHVlID0gInZhbG9yIikgJT4lIA0KICBnZ3Bsb3QoZGF0YSA9IC4sIGFlcyh4ID0gdmFsb3IpKSArDQogIGZhY2V0X3dyYXAoZmFjZXRzID0gfnZhcmlhYmxlLCBzY2FsZXMgPSAiZnJlZSIsIG5jb2wgPSA0KSArDQogIGdlb21faGlzdG9ncmFtKGFlcyh5ID0gLi5kZW5zaXR5Li4pLCBiaW5zID0gMTAsIGNvbG9yID0gImJsYWNrIiwgDQogICAgICAgICAgICAgICAgIGZpbGwgPSAiZ3JheTYwIikgKw0KICBnZW9tX2RlbnNpdHkoZmlsbCA9ICJncmF5NTAiLCBhbHBoYSA9IDAuMTgpICsNCiAgZ2VvbV9ydWcoKSArDQogIGxhYnMoeCA9ICIiLCB5ID0gIkRlbnNpZGFkIikgKw0KICB0aGVtZV9saWdodCgpICsNCiAgdGhlbWUoc3RyaXAuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gImRlZXBza3libHVlNCIpLA0KICAgICAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KGNvbG9yID0gImJsYWNrIikpDQpgYGANCg0KIyMgR3LDoWZpY29zIGN1YW50aWwgY3VhbnRpbA0KDQpgYGB7ciwgZmlnLmhlaWdodD0xMH0NCmxpYnJhcnkocXFwbG90cikNCmRhdG9zICU+JSANCiAgc2VsZWN0X2lmKGlzLm51bWVyaWMpICU+JSANCiAgc2VsZWN0KC1pZCkgJT4lIA0KICBnYXRoZXIoa2V5ID0gInZhcmlhYmxlIiwgdmFsdWUgPSAidmFsb3IiKSAlPiUgDQogIGdncGxvdChkYXRhID0gLiwgYWVzKHNhbXBsZSA9IHZhbG9yKSkgKw0KICBmYWNldF93cmFwKGZhY2V0cyA9IH52YXJpYWJsZSwgc2NhbGVzID0gImZyZWUiLCBuY29sID0gNCkgKw0KICBnZW9tX3FxX2JhbmQoZmlsbCA9ICJncmF5MjUiKSArDQogIHN0YXRfcXFfbGluZShjb2xvciA9ICJkYXJrZ3JlZW4iKSArDQogIHN0YXRfcXFfcG9pbnQoY29sb3IgPSAiYmxhY2siLCBzaXplID0gMC44KSArDQogIGxhYnMoeCA9ICJDdWFudGlsZXMgdGXDs3JpY29zIiwgeSA9ICJDdWFudGlsZXMgbXVlc3RyYWxlcyIpICsNCiAgdGhlbWVfbGlnaHQoKSArDQogIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJkZWVwc2t5Ymx1ZTQiKSwNCiAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIpKQ0KYGBgDQoNCiMjIENvbXBhcmF0aXZvcw0KDQotIFNlIGNvbXBhcmFuIHJlZ2lzdHJvcyAgZGUgKmNyb3NzLXNlY3Rpb25hbCBhcmVhIChDU0EpKiBkZSBsYSBwaWVybmEgZGUgZGVzcGVxdWUgKCp0YWtlb2ZmKikgdnMgbGEgcGllcm5hIGxpYnJlICgqZnJlZSopLiBMYXMgdmFyaWFibGVzIChtw7pzY3Vsb3MpIGEgY29tcGFyYXIgc29uIGxhcyBzaWd1aWVudGVzOg0KICAgIC0gKipSQToqKiByZWN0byBhYmRvbWluYWwuDQogICAgLSAqKk9COioqIG9ibGljdW9zIGludGVybm9zIHkgZXh0ZXJub3MuDQogICAgLSAqKlBNOioqIHBzb2FzIG1heW9yLg0KICAgIC0gKipRTDoqKiBjdWFkcmFkbyBsdW1iYXIuDQogICAgLSAqKkVTOioqIGVyZWN0b3IgKnNwaW5hZSouDQogICAgLSAqKkdtYXg6KiogZ2x1dGVvIG1heW9yLg0KICAgIC0gKipHbWVkOioqIGdsdXRlb3MgbWVkaW8geSBtw61uaW1vLg0KICAgIC0gKipJTDoqKiBpbGlhY28NCg0KYGBge3IsIGZpZy5oZWlnaHQ9NS41fQ0KZGZfdGFrZW9mZl9sZWcgPC0gZGF0b3MgJT4lIA0KICBzZWxlY3QoUkFfdGFrZW9mX2xlZzpJTF90YWtlb2ZfbGVnKSAlPiUgDQogIGdhdGhlcihrZXkgPSAidmFyaWFibGUiLCB2YWx1ZSA9ICJ2YWxvciIpICU+JSANCiAgbXV0YXRlKHRpcG8gPSAiVGFrZW9mZkxlZyIpDQoNCmRmX2ZyZWVfbGVnIDwtIGRhdG9zICU+JSANCiAgc2VsZWN0KFJBX2ZyZWVfbGVnOklMX2ZyZWVfbGVnKSAlPiUgDQogIGdhdGhlcihrZXkgPSAidmFyaWFibGUiLCB2YWx1ZSA9ICJ2YWxvciIpICU+JSANCiAgbXV0YXRlKHRpcG8gPSAiRnJlZUxlZyIpDQoNCmRmX3Rha2VvZmZfZnJlZSA8LSBkZl90YWtlb2ZmX2xlZyAlPiUgDQogIGJpbmRfcm93cyhkZl9mcmVlX2xlZykNCg0KZGZfdGFrZW9mZl9mcmVlICU+JSANCiAgc2VwYXJhdGUoY29sID0gdmFyaWFibGUsIGludG8gPSBjKCJ2YXJpYWJsZSIsICJ2MSIsICJ2MiIpKSAlPiUgDQogIHNlbGVjdCgtYyh2MSwgdjIpKSAgJT4lIA0KICBnZ3Bsb3QoZGF0YSA9IC4sIGFlcyh4ID0gdGlwbywgeSA9IHZhbG9yLCBmaWxsID0gdGlwbykpICsNCiAgZmFjZXRfd3JhcChmYWNldHMgPSB+dmFyaWFibGUsIHNjYWxlcyA9ICJmcmVlIiwgbmNvbCA9IDQpICsNCiAgZ2VvbV9ib3hwbG90KGNvbG9yID0gImJsYWNrIikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJkYXJrZ3JlZW4iLCAiZ29sZDQiKSkgKw0KICBsYWJzKHggPSAiVGlwbyBkZSBwaWVybmEiLCB5ID0gIiIpICsNCiAgdGhlbWVfbGlnaHQoKSArDQogIHRoZW1lKHN0cmlwLmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJkZWVwc2t5Ymx1ZTQiKSwNCiAgICAgICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChjb2xvciA9ICJibGFjayIpLA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQpgYGANCg0KIyMgU2hhcGlybyBXaWxrDQoNClNlIGNvbXBydWViYSBsYSBub3JtYWxpZGFkIGRlIGxhcyB2YXJpYWJsZXMgKCRcYWxwaGEgPSAwLjA1JCksIGJham8gZWwgc2lndWllbnRlIGp1ZWdvIGRlIGhpcMOzdGVzaXM6DQoNCiQkSF8wOiBYIFxzaW0gTihcbXUsIFxzaWdtYV4yKVxcDQpIMTogeCBcbnNpbSBOKFxtdSwgXHNpZ21hXjIpJCQNCg0KYGBge3J9DQpkYXRvcyAlPiUgDQogIHNlbGVjdF9pZihpcy5udW1lcmljKSAlPiUgDQogIHNlbGVjdCgtaWQpICU+JSANCiAgZ2F0aGVyKGtleSA9ICJ2YXJpYWJsZSIsIHZhbHVlID0gInZhbG9yIikgJT4lIA0KICBncm91cF9ieSh2YXJpYWJsZSkgJT4lIA0KICBzdW1tYXJpc2UodmFsb3IgPSBsaXN0KHZhbG9yKSkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBncm91cF9ieSh2YXJpYWJsZSkgJT4lIA0KICBtdXRhdGUoc2hhcGlyb192YWxvclAgPSByb3VuZChzaGFwaXJvLnRlc3QodW5saXN0KHZhbG9yKSkkcC52YWx1ZSwgZGlnaXRzID0gNSksDQogICAgICAgICBSZXN1bHRhZG8gPSBpZl9lbHNlKHNoYXBpcm9fdmFsb3JQIDw9IDAuMDUsIHRydWUgPSAiTm8gbm9ybWFsaWRhZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlID0gIlPDrSBub3JtYWxpZGFkIikpICAlPiUgDQogIHNlbGVjdCgtdmFsb3IpDQpgYGANCg0KLSA8dHJlZD4qKk5vdGE6Kio8L3RyZWQ+IGF1bnF1ZSBsb3MgYXV0b3JlcyBtZW5jaW9uYW4gcXVlIGZ1ZXJvbiBhcGxpY2FkYXMgbGFzIHBydWViYXMgZGUgKlNoYXBpcm8gV2lsayogcGFyYSBjb21wcm9iYXIgZWwgc3VwdWVzdG8gZGUgbm9ybWFsaWRhZCwgZW4gbGEgdGFibGEgYW50ZXJpb3Igc2UgZXZpZGVuY2lhIHF1ZSBhbGd1bmFzIHZhcmlhYmxlcyAoKmVqLiogIGRpc3RhbmNpYSBkZSBzYWx0bywgZ3Jhc2Egc3ViY3V0YW5lYSwgZW50cmUgb3RyYXMpIG5vIHNlIGRpc3RyaWJ1eWVuIGRlIGZvcm1hIG5vcm1hbC4gRXN0ZSByZXN1bHRhZG8gdGllbmUgY29ubm90YWNpb25lcyBkZSBpbXBvcnRhbmNpYSwgeWEgcXVlIGxhcyBjb3JyZWxhY2lvbmVzIHBvZHLDrWFuIHNlciBvYnRlbmlkYXMgbWVkaWFudGUgbcOpdG9kb3MgKm5vIHBhcmFtw6l0cmljb3MqLg0KICAgIA0KIyMgTWF0cml6IGRlIGNvcnJlbGFjaW9uZXMNCg0KLSBTZSBjb25zdHJ1eWUgbGEgbWF0cml6IGRlIGNvcnJlbGFjaW9uZXMgKG3DqXRvZG8gZGUgKlBlYXJzb24qKS4NCi0gTGEgdmFyaWFibGUgcXVlIHByZXNlbnRlIG1heW9yIGNvcnJlbGFjacOzbiBsaW5lYWwgY29uIGxhIGxvbmdpdHVkIGRlbCBzYWx0bywgc2Vyw6EgdGVuaWRhIGVuIGN1ZW50YSBwYXJhIGVzdHJ1Y3R1cmFyIGVsICptb2RlbG8gZGUgcmVncmVzacOzbiBsaW5lYWwgc2ltcGxlIChSTFMpKi4gQ29uIGxhcyBkZW3DoXMgdmFyaWFibGVzIHNlIGNvbnN0cnV5ZSBlbCAqbW9kZWxvIGRlIHJlZ3Jlc2nDs24gbGluZWFsIG3Dumx0aXBsZSAoUkxNKSouDQogICAgDQpgYGB7ciwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9OH0NCmxpYnJhcnkoY29ycnBsb3QpDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCmRhdG9zICU+JSANCiAgc2VsZWN0X2lmKGlzLm51bWVyaWMpICU+JSANCiAgc2VsZWN0KC1pZCkgJT4lIA0KICBjb3IodXNlID0gImNvbXBsZXRlLm9icyIpICU+JSANCiAgY29ycnBsb3QobWV0aG9kID0gInBpZSIsDQogICAgICAgICAgIHR5cGUgPSAidXBwZXIiLA0KICAgICAgICAgICBkaWFnID0gRkFMU0UsDQogICAgICAgICAgIHRsLmNleCA9IDAuOCwNCiAgICAgICAgICAgdGwuc3J0ID0gNDUsDQogICAgICAgICAgIGFkZGdyaWQuY29sID0gImJsYWNrIiwNCiAgICAgICAgICAgb3JkZXIgPSAiaGNsdXN0IiwNCiAgICAgICAgICAgY29sID0gYnJld2VyLnBhbChuID0gMTAsIG5hbWUgPSAiU3BlY3RyYWwiKSkNCmBgYA0KICAgIA0KLSA8dHJlZD4qKk5vdGFzOioqPC90cmVkPiANCiAgICAtIFNlIGV2aWRlbmNpYSBhbHRhIGNvcnJlbGFjacOzbiBlbnRyZSBhbGd1bmFzIHZhcmlhYmxlcy4gRXN0ZSBwYXRyw7NuIHN1Z2llcmUgcHJvYmxlbWFzIGRlICptdWx0aWNvbGluZWFsaWRhZCogYWwgYWp1c3RhciB1biBtb2RlbG8gZGUgKlJMTSouDQogICAgLSBBdGxldGFzIGNvbiBtYXlvciBhbHR1cmEgdGllbmRlbiBhIHByZXNlbnRhciBzYWx0b3MgZGUgbWVub3IgZGlzdGFuY2lhLiBFc3RlIGNvbXBvcnRhbWllbnRvIGVzIG9idGVuaWRvIGRlIGlndWFsIGZvcm1hIGVuIGFxdWVsbG9zIHF1ZSBhdW1lbnRhbiBsYSB2ZWxvY2lkYWQgZGVsICpzcHJpbnQqIGFsIHNhbHRhciwgZXMgZGVjaXIsIHF1ZSBhIG1heW9yIHZlbG9jaWRhZCwgbWVub3IgbG9uZ2l0dWQgZGUgc2FsdG8uDQogICAgLSBBdGxldGFzIGNvbiBlbCBtw7pzY3VsbyByZWN0byBhYmRvbWluYWwgZGUgbWF5b3IgbG9uZ2l0dWQsIHByZXNlbnRhbiBtYXlvcmVzIGRpc3RhbmNpYXMgZW4gc3VzIHNhbHRvcy4gQ29uIGVzdGEgdmFyaWFibGUgc2UgYWp1c3RhIGVsIG1vZGVsbyBkZSAqUkxTKi4NCiAgICANCiMgUmVncmVzacOzbiBMaW5lYWwgU2ltcGxlIChSTFMpIHsudGFic2V0IC50YWJzZXQtZmFkZSAudGFic2V0LXBpbGxzfQ0KDQotIFNlIHByb3BvbmUgY3VhbnRpZmljYXIgbGEgdW5pZGFkIGRlIGNhbWJpbyBlbiBsYSBkaXN0YW5jaWEgZGVsIHNhbHRvIHZzIGxhIGxvbmdpdHVkIChjbV4yXi9rZ14yLzNeKSBkZWwgbcO6c2N1bG8gcmVjdG8gYWJkb21pbmFsIChSQSksIHBhcmEgbGEgcGllcm5hIGRlIGRlc3BlZ3VlICgqdGFrZW9mZiopLg0KLSBFbCBtb2RlbG8gZGUgKlJMUyogcHVlZGUgc2VyIGV4cHJlc2FkbyBkZSBsYSBzaWd1aWVudGUgbWFuZXJhOg0KJCRZID0gXGJldGFfMFwgKyBcYmV0YV8xWCBcXA0KXGhhdHtZfSA9IFxoYXR7XGJldGFfMH1cICsgXGhhdHtcYmV0YV8xfVhcICsgXGVwc2lsb24kJA0KLSBFc2NyaXRvIGRlIGNhcmEgYWwgZmVuw7NtZW5vIGJham8gZXN0dWRpbywgZWwgbW9kZWxvIHF1ZWRhIGV4cHJlc2FkbyBjb21vIHNpZ3VlOg0KJCREaXN0YW5jaWEgPSBcaGF0e1xiZXRhXzB9XCArIChcaGF0e1xiZXRhXzF9XHRpbWVzIFJBKSArIFxlcHNpbG9uJCQNCi0gRXN0ZSBtb2RlbG8gZGUgKlJMUyogZXMgYWp1c3RhZG8gYSB0cmF2w6lzIGRlbCBbKk3DqXRvZG8gZGUgTcOtbmltb3MgQ3VhZHJhZG9zLipdKGh0dHBzOi8vZWRpbWVyLmdpdGh1Yi5pby9kb2N1bWVudHNfUi9MaW5lYXJNb2RlbHNfTGVhc3RTcXVhcmVzL0xpbmVhck1vZGVsc19MZWFzdFNxYXVhcmVzLmh0bWwjMSkNCg0KIyMgTW9kZWxvIExpbmVhbCBjb24gYGxtKClgDQoNCmBgYHtyfQ0KbW9kX3JscyA8LSBsbShkaXN0X3NhbHRvX2NtIH4gUkFfdGFrZW9mX2xlZywgZGF0YSA9IGRhdG9zKQ0Kc3VtbWFyeShtb2RfcmxzKQ0KYGBgDQoNCi0gPHRyZWQ+KipOb3RhOioqPC90cmVkPiBlbCByZXN1bHRhZG8gYW50ZXJpb3Igc3VnaWVyZSBxdWUgbGEgdmFyaWFibGUgYFJBX3Rha2VvZl9sZWdgIGVzIGVzdGFkw61zdGljYW1lbnRlIHNpZ25pZmljYXRpdmEgKCR2YWxvclwgcCA9MC4wMTM5JCkgc29icmUgbGEgdmFyaWFiaWxpZGFkIG9ic2VydmFkYSBlbiBsYSBkaXN0YW5jaWEgZGVsIHNhbHRvLiBBZGVtw6FzLCBzZSBwdWVkZSBpbmZlcmlyIHF1ZSBwb3IgY2FkYSB1bmlkYWQgcXVlIGF1bWVudGEgYFJBX3Rha2VvZl9sZWdgLCBsYSBkaXN0YW5jaWEgZGUgc2FsdG8gZXMgMTEuOTI4IGNlbnTDrW1ldHJvcyBtYXlvci4gTGEgdmFyaWFibGUgYFJBX3Rha2VvZl9sZWdgIGV4cGxpY2EgMjIuMDElIGRlIGxhIHZhcmlhYmlsaWRhZCBvYnNlcnZhZGEgZW4gbGEgZGlzdGFuY2lhIGRlIHNhbHRvLg0KDQojIyBTaWduaWZpY2FuY2lhIEVzdGFkw61zdGljYQ0KDQpgYGB7cn0NCmFub3ZhKG1vZF9ybHMpDQpgYGANCg0KIyMgUmVzaWR1YWxlcw0KDQpgYGB7cn0NCnBhcihtZnJvdyA9IGMoMiwgMikpDQpwbG90KG1vZF9ybHMpDQpgYGANCg0KLSAqKk5vcm1hbGlkYWQgKFNoYXBpcm8gV2lsaykgZGUgbG9zIHJlc2lkdWFsZXM6KiogDQoNCmBgYHtyfQ0Kc2hhcGlyby50ZXN0KHJlc2lkdWFscyhtb2RfcmxzKSkNCmBgYA0KDQotICoqSGV0ZXJvY2VkYXN0aWNpZGFkIC0gWypCcmV1c2NoIFBhZ2FuIFRlc3QqXShodHRwczovL2VzLndpa2lwZWRpYS5vcmcvd2lraS9UZXN0X2RlX0JyZXVzY2gtUGFnYW4pOioqDQoNCmBgYHtyfQ0KbGlicmFyeShsbXRlc3QpDQpicHRlc3QobW9kX3JscykNCmBgYA0KDQotIFNlIGNvbXBydWViYSBxdWUgZXhpc3RlIG5vcm1hbGlkYWQgZGUgbG9zIHJlc2lkdW9zIHksIGFkZW3DoXMsIHNvbiBob21vY2VkYXN0aWNvcy4NCg0KIyMgUmVhbGVzIHZzIFByZWRpY2hvcw0KDQpgYGB7cn0NCnJlYWxlcyA8LSBkYXRvcyRkaXN0X3NhbHRvX2NtWyFpcy5uYShkYXRvcyRkaXN0X3NhbHRvX2NtKV0NCnByZWRpY2hvcyA8LSBtb2RfcmxzJGZpdHRlZC52YWx1ZXMNCmRhdGEuZnJhbWUoDQogIFJlYWwgPSByZWFsZXMsDQogIFByZWRpY2hvcyA9IHByZWRpY2hvcw0KKSAlPiUgDQogIGdncGxvdChkYXRhID0gLiwgYWVzKHggPSBQcmVkaWNob3MsIHkgPSBSZWFsKSkgKw0KICBnZW9tX3BvaW50KCkgKw0KICBsYWJzKHggPSAoIlZhbG9yZXMgcHJlZGljaG9zIGRlIGRpc3RhbmNpYSAoY20pIiksDQogICAgICAgeSA9ICJWYWxvcmVzIHJlYWxlcyBkZSBkaXN0YW5jaWEgKGNtKSIpICsNCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgc2UgPSBGQUxTRSwgbHR5ID0gMywgbHdkID0gMSwgY29sb3IgPSAiYmxhY2siKSArDQogIHRoZW1lX2xpZ2h0KCkNCmBgYA0KDQotIExhIGNvcnJlbGFjacOzbiBlbnRyZSBsb3MgKip2YWxvcmVzIHJlYWxlcyoqIHkgKip2YWxvcmVzIHByZWRpY2hvcyoqIHBvciBlbCBtb2RlbG8gZGUgKlJMUyogZXM6IGByIHJvdW5kKGNvcihyZWFsZXMsIHByZWRpY2hvcyksIGRpZ2l0cyA9IDMpYDsgbcOhcyBiYWphIHF1ZSBsYSByZXBvcnRhZGEgcG9yIGxvcyBhdXRvcmVzIGFsIGFqdXN0YXIgdW4gbW9kZWxvIGRlICpSTE0qLCBjdXlvIHZhbG9yIGVzIGlndWFsIGEgMC44OTINCg0KIyBSZWdyZXNpw7NuIExpbmVhbCBNw7psdGlwbGUgKFJMTSkgey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9DQoNCi0gUGFyYSBsYSBjb25zdHJ1Y2Npw7NuIGRlbCBtb2RlbG8gZGUgKlJMTSogc2UgY29tcHJ1ZWJhIGxhIG11bHRpY29saW5lYWxpZGFkIGRlIGxhcyB2YXJpYWJsZXMgeSBzZSBwcm9wb25lbiBjdWF0cm8gYWx0ZXJuYXRpdmFzOg0KICAgIC0gPHRyZWQ+KipNb2RlbG8gMToqKjwvdHJlZD4gTW9kZWxvIGRlICpSTE0qIGNvbiBlbGltaW5hY2nDs24gZGUgdmFyaWFibGVzIHBvciB2YWxvcmVzIGRlIGNvcnJlbGFjacOzbi4NCiAgICAtIDx0cmVkPioqTW9kZWxvIDI6Kio8L3RyZWQ+IE1vZGVsbyBkZSAqUkxNKiBjb24gZWxpbWluYWNpw7NuIGRlIHZhcmlhYmxlcyBwb3IgWypmYWN0b3IgaW5mbGFjaW9uYXJpbyBkZSB2YXJpYW56YS4qXShodHRwczovL2VzLndpa2lwZWRpYS5vcmcvd2lraS9GYWN0b3JfZGVfaW5mbGFjaSVDMyVCM25fZGVfbGFfdmFyaWFuemEpDQogICAgLSA8dHJlZD4qKk1vZGVsbyAzOioqPC90cmVkPiBNb2RlbG8gZGUgKlJMTSogc2VsZWNjaW9uYW5kbyBwcmVkaWN0b3JlcyBjb24gZWwgbcOpdG9kbyAqU3RlcHdpc2UqICh1dGlsaXphZG8gcG9yIGxvcyBhdXRvcmVzIGRlbCBhcnTDrWN1bG8pLg0KICAgIC0gPHRyZWQ+KipNb2RlbG8gNDoqKjwvdHJlZD4gTW9kZWxvIGRlIHJlZ3Jlc2nDs24gcG9yIGNvbXBvbmVudGVzIHByaW5jaXBhbGVzIChbKm3DrW5pbW9zIGN1YWRyYWRvcyBwYXJjaWFsZXMqXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXJ0aWFsX2xlYXN0X3NxdWFyZXNfcmVncmVzc2lvbikpLg0KLSBMb3MgbW9kZWxvcyBzb24gY29tcGFyYWRvcyBhIHRyYXbDqXMgZGVsICpSXjJeIGFqdXN0YWRvKiAobWF5b3IgbWVqb3IpIHkgZWwgKmN1YWRyYWRvIG1lZGlvIGRlbCBlcnJvciAoQ01FKS4qDQoNCiMjIE1vZGVsbyAxDQoNCiMjIE1vZGVsbyAyDQoNCiMjIE1vZGVsbyAzDQoNCiMjIE1vZGVsbyA0DQogICAg